/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 86187
 * Date: 2022-10-18
 * Time: 20:58
 */
public class add {
    public static int addAB(int A, int B) {
        int count = 0;// 代表需要进位的二进制位
        while(B != 0) {
            count = A & B; // 当count 不为0时, 说明A B 的二进制为必定至少在一个相同的位置的二进制位同时位 1.
                           // 那么在 count 为1的这些二进制位就是需要进位的!
                           // 当没有需要进位的时候(即AB的二进制位0 1 互相错开时), count为0.
                           // 那么就退出循环就可以了. 因为不需要进位时, 异或 和 加法 的结果相同.
            A = A ^ B;
            B = count << 1;
        }
        return A;
    }

    public static void main(String[] args) {
        System.out.println(addAB(15, 20));
    }
}
